#ifndef PHYS_SOLVE_MATH_H
#define PHYS_SOLVE_MATH_H

#include <cmath>

namespace phys_engine
{
    struct simulate_point{
	double x,y;
	simulate_point(double _x,double _y):x(_x),y(_y){}
	simulate_point():x(0),y(0){}
    };

    struct show_point{
	    int X,Y;
    	show_point(int _X,int _Y):X(_X),Y(_Y){}
    	show_point():X(0),Y(0){}
    };

    double point_distance(simulate_point _p1,simulate_point _p2);
    double point_distance(double _x1,double _y1,double _x2,double _y2);
    double calc_angle(simulate_point _p1,simulate_point _p2);
    double calc_angle(double _x1,double _y1,double _x2,double _y2);
    double _2ddet(double a,double b,double c,double d);
    double solve_linear_x(double a_11,double a_12,double b_1,double a_21,double a_22,double b_2);
    double solve_linear_y(double a_11,double a_12,double b_1,double a_21,double a_22,double b_2);
    double calc_angacc(double f_effx,double f_effy,double f_divx,double f_divy,double inertia);
    simulate_point calc_point(simulate_point _p,double angle,double dist);
    simulate_point calc_point(double x,double y,double angle,double dist);
}

#endif